package com.ktgj.customer.service;

import com.ktgj.customer.domain.*;
import com.ktgj.customer.domain.vo.OrderInfoPayVo;
import com.ktgj.customer.domain.vo.TravelGroupOrderRequest;
import com.ktgj.customer.domain.vo.TravelOrderInfoVo;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * 旅游订单Service接口
 * 
 * @author ruoyi
 * @date 2021-10-26
 */
public interface IOrderInfoService
{
    /**
     * 查询旅游订单
     * 
     * @param orderId 旅游订单ID
     * @return 旅游订单
     */
    public OrderInfoDto selectOrderInfoById(Long orderId);

    /**
     * 查询旅游订单列表
     * 
     * @param orderInfoDto 旅游订单
     * @return 旅游订单集合
     */
    public List<OrderInfoDto> selectOrderInfoList(OrderInfoDto orderInfoDto);

    /**
     * 新增旅游订单
     * 
     * @param orderInfoDto 旅游订单
     * @return 结果
     */
    public int insertOrderInfo(OrderInfoDto orderInfoDto);

    /**
     * 修改旅游订单
     * 
     * @param orderInfoDto 旅游订单
     * @return 结果
     */
    public int updateOrderInfo(OrderInfoDto orderInfoDto);

    /**
     * 批量删除旅游订单
     * 
     * @param orderIds 需要删除的旅游订单ID
     * @return 结果
     */
    public int deleteOrderInfoByIds(Long[] orderIds);

    /**
     * 删除旅游订单信息
     * 
     * @param orderId 旅游订单ID
     * @return 结果
     */
    public int deleteOrderInfoById(Long orderId);

    /**
     * 填写旅游订单
     * @param token
     * @param request
     * @return
     */
    TravelGroupOrderResponse createOrderInfo(String token, TravelGroupOrderRequest request);

    /**
     * 生成旅游订单
     * @param token
     * @param input
     * @return
     */
    TravelGroupOrderOutput createOrder(String token, TravelGroupOrderInput input) throws Exception;

    int travelOrderRefund(Long orderId);

    /**
     * 获取待支付订单
     * @param customerId
     * @return
     */
    public List<OrderInfoDto> queryByPayOrder(Long customerId);

    /**
     * 旅游创建订单
     * */
    public String travelOrder(HttpServletRequest request, TravelOrderInfoVo travelOrderInfoVo) throws Exception;

    /**
     * 旅游支付
     * */
    public String orderInfoPay(HttpServletRequest request, OrderInfoPayVo orderInfoPayVo) throws Exception;
}
